﻿// Decompiled with JetBrains decompiler
// Type: MCM.LightInject.IEmitter
// Assembly: MCMv5, Version=5.10.2.0, Culture=neutral, PublicKeyToken=null
// MVID: 7AB326B9-B2B4-41C2-9177-68E944071101
// Assembly location: D:\steam\steamapps\workshop\content\261550\2859238197\bin\Win64_Shipping_Client\MCMv5.dll

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Reflection.Emit;

#nullable disable
namespace MCM.LightInject
{
  internal interface IEmitter
  {
    Type StackType { get; }

    List<Instruction> Instructions { get; }

    void Emit(OpCode code);

    void Emit(OpCode code, string arg);

    void PushConstantValue(object arg, Type type);

    void Emit(OpCode code, int arg);

    void Emit(OpCode code, long arg);

    void Emit(OpCode code, sbyte arg);

    void Emit(OpCode code, byte arg);

    void Emit(OpCode code, Type type);

    void Emit(OpCode code, ConstructorInfo constructor);

    void Emit(OpCode code, LocalBuilder localBuilder);

    void Emit(OpCode code, MethodInfo methodInfo);

    LocalBuilder DeclareLocal(Type type);
  }
}
